package com.battery.system.mapper;

import com.battery.system.base.BaseMapper;
import com.battery.system.domain.BO.OrderBO;
import com.battery.system.domain.Order;
import com.battery.system.domain.VO.OrderDetails;
import com.battery.system.domain.VO.OrderVO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 支付订单Mapper接口
 *
 * @author battery
 * @date 2021-01-22
 */
public interface OrderMapper extends BaseMapper<Order> {
    /**
     * 查询支付订单
     *
     * @param id 支付订单ID
     * @return 支付订单
     */
    public Order selectOrderById(String id);

    /**
     * 查询支付订单列表
     *
     * @param order 支付订单
     * @return 支付订单集合
     */
    public List<Order> selectOrderList(Order order);

    /**
     * 新增支付订单
     *
     * @param order 支付订单
     * @return 结果
     */
    public int insertOrder(Order order);

    /**
     * 修改支付订单
     *
     * @param order 支付订单
     * @return 结果
     */
    public int updateOrder(Order order);

    /**
     * 删除支付订单
     *
     * @param id 支付订单ID
     * @return 结果
     */
    public int deleteOrderById(String id);

    /**
     * 批量删除支付订单
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteOrderByIds(String[] ids);

    /**
     * 查询支付订单列表
     *
     * @param orderBO
     * @return
     */
    List<OrderVO> selectOrderVOList(@Param("orderBO") OrderBO orderBO);

    OrderDetails selectOrderUsedIncome(@Param("id") String id);

    /**
     * 查询用户正常押金之和
     *
     * @param appUserId
     * @return
     */
    BigDecimal noUsedWxDepositSum(String appUserId);

    /**
     * 查询该支付宝用户正常押金之和
     *
     * @param appUserId
     * @return
     */
    BigDecimal noUsedAliDepositSum(String appUserId);

    /**
     * 查询该用户是否存在支付完毕但是未出密码的支付订单
     *
     * @param appUserId
     * @param sn
     * @return
     */
    Order isHasOrderNotLineOrder(@Param("appUserId") String appUserId, @Param("sn") String sn);
}
